﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using estudent.Models;

namespace estudent.Controllers
{
    public class SeznamSmerLetnikModulController : Controller
    {
        private estudentEnt db = null;

        private IEnumerable<LetnikiStudija> letniki=null;
        private IEnumerable<int> leta = null;
        private IEnumerable<SSmeri> studijskiProgramiSmeri = null;
        private IEnumerable<VrsteVpisa> vrstaVpisov = null;
        private IEnumerable<SModuli> moduli = null;

        public SeznamSmerLetnikModulController()
        {
            db = new estudentEnt();

            letniki = from l in db.LetnikiStudijas
                      select l;

            leta = (from v in db.Vpisis
                   orderby v.letoVpisa
                    select v.letoVpisa.Year).Distinct();

            studijskiProgramiSmeri = from s in db.SSmeris
                                     select s;

            vrstaVpisov = from v in db.VrsteVpisas
                          select v;
            moduli = from m in db.SModulis
                     orderby m.imeModula
                     select m;
        }

        //
        // GET: /SeznamSmerLetnikModul/

        public ActionResult Index()
        {
            ViewData["letniki"] = letniki;
            ViewData["programismeri"] = studijskiProgramiSmeri;
            ViewData["vrstavpisov"] = vrstaVpisov;
            ViewData["moduli"] = moduli;
            ViewData["leta"] = leta;

            return View("SeznamSmerLetnikModul");
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public string Poisci(FormCollection form)
        {
            IEnumerable<Vpisi> iskani = from v in db.Vpisis
                         select v;

            string imeModula = "";

            int leto = (form["studijskoLeto"].CompareTo("neglede") == 0) ? -1 : Int32.Parse(form["studijskoLeto"]);
            if (leto > 0)
                iskani = iskani.Where(v=>v.letoVpisa.Year==leto);
            decimal letnik = (form["letnik"].CompareTo("neglede") == 0) ? -1 : Decimal.Parse(form["letnik"]);
            if (letnik > 0)
                iskani = iskani.Where(v=>v.idLetnikStudija == letnik);
            string program = (form["programsmer"].CompareTo("neglede") == 0) ? "" : (form["programsmer"]);
            if (program.Length > 0)
                iskani = iskani.Where(v=>v.sSmer == program);
            decimal modul = (form["modul"].CompareTo("neglede") == 0) ? -1 : Decimal.Parse(form["modul"]);
            if (modul > 0)
            {
                imeModula = (db.SModulis.FirstOrDefault(m=>m.sModula == modul)).imeModula;
                sPredmeti predmet = db.sPredmetis.FirstOrDefault(p=>p.sModula == modul);
                IEnumerable<Vpisi> vpisiOdPredmeta = predmet.Vpisis;
                iskani = from v in iskani
                         from v2 in vpisiOdPredmeta
                         where v.idVpisa == v2.idVpisa
                         select v;
                
            }
                
            string vrsta = (form["vrsta"].CompareTo("neglede") == 0) ? "" : (form["vrsta"]);
            if (vrsta.Length > 0)
                iskani = iskani.Where(v=>v.idVrstaVpisa == vrsta);
            string nacin=(form["nacin"].CompareTo("neglede") == 0) ? "" : form["nacin"];
            if (nacin.Length > 0)
                if(nacin.CompareTo("redni")==0)
                    iskani = iskani.Where(v=>v.redni==true);
                else
                    iskani = iskani.Where(v => v.redni == false);

            iskani = (iskani.OrderBy(v=>v.Studenti.priimek)).ThenBy(v=>v.Studenti.ime);

            string result = @"<tr align='center'>
                            <th>Zap. št.</th>
                            <th>Vpisna</th>
                            <th>Priimek</th>
                            <th>Ime</th>
                            <th>Vrsta vpisa</th>
                            </tr>";
            int i = 0;
            
            foreach (var iskan in iskani)
            {
                i++;
                result += "<tr align='center'>";
                result += "<td>"+i+".</td>";
                result += "<td>" + iskan.username + "</td>";                
                result += "<td>" + iskan.Studenti.priimek + "</td>";
                result += "<td>" + iskan.Studenti.ime + "</td>";
                result += "<td>" + ((iskan.VrsteVpisa.idVrstaVpisa.CompareTo("V1") == 0) ? "&nbsp;" : iskan.VrsteVpisa.idVrstaVpisa) + "</td>";
                result += "</tr>";
            }

            return result;
        }
    }
}
